草庐IT

C++ ifstream 到 char *

全部标签

c++ - 为什么将 'ifstream' 和 'ofstream' 添加到 "std"中,而 'fstream' 可以同时满足这两个目的?

使用std::fstream可以声明ifstream和ofstream两种类型的对象。唯一的区别是,对于fstream,我们需要提供in、out、app作为参数,这可能并不总是需要其他两个。ifstream,ofstream有什么特别之处是fstream无法实现的,或者只是为了方便编码? 最佳答案 这有点像问为什么我们想要const无论如何你都可以从变量中读取和写入。它允许编译时检查,这是减少错误的一项非常宝贵的功能。它也更加self记录,因为在没有调用构造函数的情况下查看声明时,您可以看到它是输入、输出还是两者兼而有之:您提到的参

c++ - 如何防止从 char 数组到 bool 的隐式转换

structFoo{voidsetBar(boolbar_){bar=bar_;}boolbar;};intmain(){Foof;f.setBar("true");}由于类型转换,上述代码编译成功,即使在需要bool的地方传递了一个char数组。是否有可能导致这段代码编译失败?(首选C++03解决方案,因为我工作场所的编译器很古老。)我查看了StackOverflow上的以下相关问题,但它们并没有完全解决这个问题。PreventingimplicitconversioninC++,Whydoesthecompilerchoosebooloverstringforimplicittyp

c++ - std::optional 实现为 union vs char[]/aligned_storage

在阅读GCC对std::optional的实现时,我注意到了一些有趣的事情。我知道boost::optional实现如下:templateclassoptional{//...private:boolhas_value_;aligned_storagestorage_;}但是libstdc++和libc++(以及Abseil)都像这样实现它们的可选类型:templateclassoptional{//...private:structempty_byte{};union{empty_byteempty_;Tvalue_;};boolhas_value_;}在我看来,它们在功能上是相同的

C++17 std::from_chars 和 std::to_chars 的用途?

在C++17之前,存在多种将整数、float和double与字符串相互转换的方法。例如,std::stringstream、std::to_string、std::atoi、std::stoi,其他人可以用来完成这些任务。为此,有很多帖子讨论了这些方法之间的差异。但是,C++17现在引入了std::from_chars和std::to_chars。为此,我想知道引入另一种与字符串相互转换的方法的原因。一方面,这些新函数与以前的方法相比有哪些优势和功能?不仅如此,这种新的字符串转换方法还有什么明显的缺点吗? 最佳答案 std::str

c++ - "operator char*"问题

下面的代码预计会打印“kevin”但是,它正在打印垃圾值。我已经检查了调试器。“operatorchar*”调用返回的指针无效。有什么想法吗?classWrapper{private:char*_data;public:Wrapper(constchar*input){intlength=strlen(input)+1;_data=newchar[length];strcpy_s(_data,length,input);}~Wrapper(){delete[]_data;}operatorchar*(){return_data;}};intmain(){char*username=Wr

c++ - char[9][9] 的初始值设定项太多

这个问题在这里已经有了答案:Singlequotesvs.doublequotesinCorC++(14个答案)关闭3年前。但问题是,我声明的char数组中的初始值设定项数量正好。chardash[9][9]={{"1","2","3","4","5","6","7","8","9"},{"a","b","c","d","e","f","g","h","i"},{"q","w","e","r","t","y","u","i","o"},{"9","8","7","6","5","4","3","2","1"},{"i","h","g","f","e","d","c","b","a"},

c++ - char vs wchar_t何时使用哪种数据类型

我想了解char和wchar_t之间的区别吗?我知道wchar_t使用更多字节,但是我可以得到一个清晰的示例来区分何时使用char与wchar_t的区别 最佳答案 从根本上讲,当编码的符号数量超过wchar_t可以包含的数量时,请使用char。背景char类型具有足够的容量来容纳ASCII字符集中的任何字符(编码)。问题在于,许多语言需要的编码比ASCII帐户所需的更多。因此,需要更多而不是127种可能的编码。某些语言具有256种以上的可能编码。char类型不能保证范围大于256。因此需要新的数据类型。wchar_t(又称宽字符)为

c++ - 您如何处理标准库中的 signed char -> int 问题?

这是我工作中长期存在的问题,我意识到我仍然没有好的解决方案......C天真地为一个int定义了它所有的字符测试函数:intisspace(intch);但是char通常是带符号的,并且完整的字符通常不适合int或用于字符串的任何单个存储单元******。而这些函数已经成为当前C++函数和方法的逻辑模板,为当前的标准库奠定了基础。事实上,他们仍然受到支持,afaict。因此,如果您使用isspace(*pchar),您最终可能会遇到符号扩展问题。它们很难被发现,因此根据我的经验,它们很难防范。同样,因为isspace()和它的同类都采用整数,并且因为字符的实际宽度通常在没有字符串分析的

c++ - 指向 const char 与 char 数组与 std::string 的指针

这里有两行代码constchar*s1="test";chars2[]="test";两行代码具有相同的行为,所以我看不出我应该更喜欢s1而不是s2还是相反。除了s1和s2,还有使用std::string的方式。我认为使用std::string的方式是最优雅的。在查看其他代码时,我经常看到人们使用constchar*或chars[]。因此,我现在的问题是,什么时候应该使用constchar*s1或chars[]或std::string?有什么区别,在什么情况下我应该使用哪种方法? 最佳答案 POINTERS--------charc

c++ - 获取 char 的 ascii 值,C++ 中的 Ord 等价物

在delphi中存在一个名为Ord的函数which返回序号类型表达式的序号值。例如,您可以通过这种方式检索字符的Ascii值Ord('A')返回65Ord('a')返回97在C++中,我必须使用哪个函数来获取Char的ascii值? 最佳答案 一个简单的inta=c;应该可以工作,其中c是一个char。 关于c++-获取char的ascii值,C++中的Ord等价物,我们在StackOverflow上找到一个类似的问题: https://stackoverfl